home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Telnet Server 1.0 / tcplow.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-14  |  6.6 KB  |  155 lines  |  [TEXT/KAHL]

  1. /*
  2. Copyright © 1994 Mikhail Fridberg. Part of this code is copyrighted by John Nordstad
  3. Utilities for BSD Socket calls
  4.  
  5. */
  6. #pragma once
  7.  
  8. short GetTCPRefNum (void);
  9.  
  10. OSErr OpenTCPDriver(void);                /* opens the MacTCP driver */
  11.  
  12. OSErr LowKillTCP(                        /* kills a pending MacTCP driver call        */
  13.     TCPiopb *pBlock);
  14.  
  15. OSErr LowTCPCreateStream(                /* creates a MacTCP stream                     */
  16.     StreamPtr *streamPtr,                    /* stream created (returned)            */
  17.     Ptr connectionBuffer,                    /* pointer to connection buffer            */
  18.     unsigned long connBufferLen,            /* length of connection buffer            */
  19.     TCPNotifyProc notifPtr);                /* address of Async. Notification Rtn.    */
  20.  
  21. OSErr LowFinishTCPWaitForConn(            /* called when LowTCPWaitForConn. completes    */
  22.     TCPiopb *pBlock,                        /* parameter block used for wait call    */
  23.     ip_addr *remoteHost,                    /* remote host connected to (returned)    */
  24.     tcp_port *remotePort,                    /* remote port connected to (returned)    */
  25.     ip_addr *localHost,                        /* local host- our ip number (returned)    */
  26.     tcp_port *localPort);                    /* local port connected to (returned)    */
  27.     
  28. OSErr LowTCPWaitForConnection(            /* listens for a TCP connection to be opened*/
  29.     StreamPtr streamPtr,                    /* stream pointer for connection        */
  30.     byte timeout,                            /* timeout for listen                    */
  31.     ip_addr *remoteHost,                    /* remote host to listen for (returned)    */
  32.     tcp_port *remotePort,                    /* remote port to listen on (returned)    */
  33.     ip_addr *localHost,                        /* local host number (returned)            */
  34.     tcp_port *localPort,                    /* local port to listen on (returned)    */
  35.     Boolean async,                            /* true if call to be made async        */
  36.     TCPiopb **returnBlock);                    /* address of parameter block used        */
  37.     
  38. OSErr LowTCPOpenConnection(                /* actively attempts to connect to a host    */
  39.     StreamPtr streamPtr,                    /* stream to use for this connection    */
  40.     byte timeout,                            /* timeout value for open                */
  41.     ip_addr remoteHost,                        /* ip number of host to connect to        */
  42.     tcp_port remotePort,                    /* tcp port number of host to connect to*/
  43.     ip_addr *localHost,                        /* local host ip number (returned)        */
  44.     tcp_port *localPort);                    /* local port number used for connection*/
  45.     
  46. OSErr LowFinishTCPSend(                    /* called when TCPSendData completes        */
  47.     TCPiopb *pBlock);                        /* parameter block used in call            */
  48.  
  49. OSErr LowTCPSendData(                    /* send data along an open connection        */
  50.     StreamPtr streamPtr,                    /* stream identifier to send data on    */
  51.     byte timeout,                            /* timeout for this send                */
  52.     Boolean push,                            /* true if "push" bit to be set            */
  53.     Boolean urgent,                            /* true if "urgent" bit to be set        */
  54.     Ptr wdsPtr,                                /* write data structure (len/data pairs)*/
  55.     Boolean async,                            /* true if call is to be asynchronous    */
  56.     TCPiopb **returnBlock);                    /* parameter block used (returned)        */
  57.     
  58. OSErr LowFinishTCPNoCopyRcv(            /* called when LowTCPNoCopyRcv finishes        */
  59.     TCPiopb *pBlock,                        /* parameter block used    in call            */
  60.     Boolean *urgent,                        /* value of urgent flag (returned)        */
  61.     Boolean *mark);                            /* value of mark flag (returned)        */
  62.     
  63. OSErr LowTCPNoCopyRcv(                    /* receives data & doesn't copy to ext. buf.*/
  64.     StreamPtr    streamPtr,                    /* stream waiting for data on            */
  65.     byte        timeout,                    /* timeout for receive                    */
  66.     Boolean        *urgent,                    /* value of urgent flag (returned)        */
  67.     Boolean        *mark,                        /* value of mark flag (returned)        */
  68.     Ptr            rdsPtr,                        /* pointer to read data struct data/len */
  69.     short        numEntry,                    /* number of entries in read data struct*/
  70.     Boolean        async,                        /* true if call is asynchronous            */
  71.     TCPiopb        **returnBlock);                /* parameter block used (returned)        */
  72.  
  73. OSErr LowTCPBfrReturn(                    /* returns a buffer used in LowTCPNoCopyRcv    */
  74.     StreamPtr    streamPtr,                    /* stream on which data was received    */
  75.     Ptr            rdsPtr);                    /* pointer to buffer (read data struct)    */
  76.     
  77. OSErr LowFinishTCPRecv(                    /* called when LowTCPRecvData completes        */
  78.     TCPiopb        *pBlock,                    /* parameter block used in call            */
  79.     Boolean        *urgent,                    /* value of urgent flag (returned)        */
  80.     Boolean        *mark,                        /* value of mark flag (returned)        */
  81.     unsigned short *rcvLen);                /* length of data received                */
  82.  
  83. OSErr LowTCPRecvData(                    /* waits for data to be send on a TCP stream*/
  84.     StreamPtr    streamPtr,                    /* stream waiting for data on            */
  85.     byte        timeout,                    /* timeout for receive                    */
  86.     Boolean        *urgent,                    /* value of urgent flag (returned)        */
  87.     Boolean        *mark,                        /* value of mark flag (returned)        */
  88.     Ptr            rcvBuff,                    /* buffer to store received data        */
  89.     unsigned short *rcvLen,                    /* length of data received                */
  90.     Boolean     async,                        /* true if call is asynchronous            */
  91.     TCPiopb        **returnBlock);                /* parameter block used (returned)        */
  92.     
  93. OSErr LowTCPClose(                        /* closes a connection on a given TCP stream*/
  94.     StreamPtr    streamPtr,                    /* stream identifier for connection        */
  95.     byte        timeout);                    /* timeout for close command            */
  96.     
  97. OSErr LowTCPAbort(                        /* aborts a TCP connection non-gracefully    */
  98.     StreamPtr streamPtr);                    /* stream identifier for connection        */
  99.  
  100. OSErr LowTCPStatus(                        /* returns status information for a stream    */
  101.     StreamPtr    streamPtr,                    /* stream to get status of                */
  102.     TCPStatusPB    *theStatus);                /* status (see MacTCP manual for info)    */
  103.     
  104. OSErr LowTCPRelease(                    /* releases a TCP connection stream            */
  105.     StreamPtr    streamPtr,                    /* stream to be released                */
  106.     Ptr            *recvPtr,                    /* connection buffer (returned)            */
  107.     unsigned long *recvLen);
  108.     
  109. OSErr LowTCPGlobalInfo(                    /* returns status information for all MacTCP*/
  110.     Ptr    *tcpParam,                            /* TCP parameters(returned) (see manual)*/
  111.     Ptr    *tcpStat);                            /* TCP statistics(returned) (see manual)*/
  112.  
  113. OSErr LowIPNameToAddr(char *name, unsigned long *addr);
  114.  
  115. OSErr LowIPAddrToName(unsigned long addr, char *name);
  116.  
  117. OSErr LowGetMyIPAddr(unsigned long *addr);
  118.  
  119. OSErr LowGetMyIPAddrStr(char *addrStr);
  120.  
  121. OSErr RecvData(unsigned long stream, Ptr data, unsigned short *length,    Boolean retry);
  122.  
  123. OSErr SendData(unsigned long stream, Ptr data, unsigned short length);
  124.  
  125. Boolean GiveTime (void);
  126.  
  127. void pstrcpy (StringPtr to, StringPtr from);
  128.  
  129. pascal void InitCursorCtl (Handle id);
  130.  
  131. pascal void SpinCursor (short num);
  132.  
  133.  
  134.  
  135. pascal void DNRResultProc(struct hostInfo *hInfoPtr,char *userDataPtr);
  136.  
  137.  
  138. OSErr GetMyIP(ip_addr *ipnum);
  139.  
  140.  
  141.  
  142. typedef char CStr255[256];        /* like Str255, except for C-format strings. */
  143. extern Boolean         gCancel;            /* flag set when user cancels an action */
  144. extern short         gRefNum;
  145.  
  146.  
  147. /*
  148.  * Some useful error-checking macros
  149.  */
  150. #define FailErr(test, label)    if ((err=(test)) != noErr) goto label
  151. #define FailNIL(test, label)    do { \
  152.                                     if ((test)==nil) { err = MyMemErr(); goto label; } \
  153.                                 } while (0) /* (nasty trick to require semicolon) */
  154. #define FailMemErr(label)        if ((err=MemError()) != noErr) goto label
  155.